package com.example.leetcode.trainingcamp.week4.Thursday;

public class Offer16 {

    /**
     * 实现 pow(x, n) ，即计算 x 的 n 次幂函数（即，xn）。不得使用库函数，同时不需要考虑大数问题。
     *
     *
     * @param x
     * @param n
     * @return
     */
    public double myPow(double x, int n) {
        if(x == 0) return 0;
        long b = n;
        double res = 1.0;
        if(b < 0) {
            x = 1 / x;
            b = -b;
        }
        while(b > 0) {
            if((b & 1) == 1) res *= x;
            x *= x;
            b >>= 1;
        }
        return res;

    }
}


class TestOffer16{
    public static void main(String[] args) {
        Offer16 o = new Offer16();
        double v = o.myPow(2.0d, -2);
        System.out.println(v);

    }
}